package conf

import (
	"fmt"
	"os"

	"gopkg.in/yaml.v2"
)

var (
	mysql_yaml = "../../conf/mysql.yml"
)

// MySQL 定义了一个数据库配置结构体
type MySQL struct {
	// Host 是数据库服务器的主机名或 IP 地址
	Host string `yaml:"db_host"`
	// Port 是数据库服务器的端口号
	Port string `yaml:"db_port"`
	// Database 是要连接的数据库名称
	Database string `yaml:"db_database"`
	// Username 是连接数据库的用户名
	Username string `yaml:"db_username"`
	// Password 是连接数据库的密码
	Password string `yaml:"db_password"`
}

// GetConf 方法从 yaml 文件中读取数据库配置，并将其填充到 MySQL 结构体中
func (c *MySQL) GetConf() *MySQL {
	// 尝试读取 yaml 文件
	file, err := os.ReadFile(mysql_yaml)
	// 如果读取文件时发生错误，打印错误信息并返回 nil
	if err != nil {
		fmt.Printf("err: %v\n", err)
		return nil
	}
	// 尝试将读取的 YAML 文件内容解析并填充到 MySQL 结构体中
	err = yaml.Unmarshal(file, c)
	// 如果解析 YAML 文件时发生错误，打印错误信息并返回 nil
	if err != nil {
		fmt.Printf("err: %v\n", err)
		return nil
	}
	// 返回填充了配置信息的 MySQL 结构体指针
	return c
}
